Shell Scripts

什么是Shell scripts

shell script是利用shell的功能所写的一个程序,这个程序使用纯文本文件,将一些shell的语法与指令(含外部指令)写在里面,搭配正则表达式,管线命令与数据流重导向等功能,以达到我们所想要的处理目的。

干嘛学习shell scripts

自动化管理的重要依据

追踪与管理系统的重要工作

系统服务启动接口所在的目录下所有文件都是scripts,包括开机(booting)过程也都是利用shell script来帮忙搜寻系统的相关设置数据,然后再代入各个服务的设置参数。

简单入侵侦测功能

连续指令单一化

简易的数据处理

跨平台支持与学习历程较短

第一支script的撰写与执行

shell script其实就是纯文本文件,可以编辑这个文件,然后让这个文件一次执行多个指令。

  1. 指令的执行是从上而下、从左而右的分析与执行。
  2. 指令、选项与参数间的多个空白都会被忽略掉。
  3. 空白行也将被忽略掉,并且[tab]按键所推开的空白同样视为空白键。
  4. 如果读取到一个Enter符号 (CR) ,就尝试开始执行该行 (或该串) 命令。
  5. 至于如果一行的内容太多,则可以使用“ [Enter]”来延伸至下一行。
  6. #可做为注解!任何加在 #后面的数据将全部被视为注解文字而被忽略!

假设编写好的文件名为shell.sh。执行方法有。

  1. 直接指令下达:shell.sh文件必须具备可读与可执行(rx)的权限。无论如何到达shell.sh的目录,然后直接输入shell.sh就能执行。
  2. 以bash程序来执行,通过bash shell.sh或sh shell.sh来执行。

撰写第一支script

  1. 第一行# ! / bin / bash在宣告这个script使用的shell名称:因为我们使用的是bash,所以,必须要以“ # ! / bin / bash”来宣告这个文件内的语法使用bash的语法!那么当这个程序被执行时,他就能够载入bash的相关环境配置文件(一般来说就是non-login shell的~/.bashrc),并且执行bash来使我们下面的指令能够执行!这很重要的! (在很多状况中,如果没有设置好这一行,那么该程序很可能会无法执行,因为系统可能无法判断该程序需要使用什么shell 来执行啊! )
  2. 程序内容的说明: 整个script当中,除了第一行的“ # !”是用来宣告shell的之外,其他的 # 都是“注解”用途! 所以上面的程序当中,第二行以下就是用来说明整个程序的基本数据。一般来说,建议你一定要养成说明该script的:1.内容与功能;2.版本信息; 3.作者与联络方式;4.创建日期;5.历史纪录等等。这将有助于未来程序的改写与debug。
  3. 执行成果告知(定义回传值),可以利用exit这个指令来让程序中断,并且回传一个数值给系统。利用exit n(n是数字)的功能,可以自订错误讯息,让程序变得更加smart。

撰写shell script的良好习惯创建

在每个script的文件开始处记录好:

  1. script的功能
  2. script的版本信息
  3. script的作者与联络方式
  4. script的版权宣告方式
  5. script的历史记录
  6. script内教特殊的指令,使用绝对路径的方式来下达
  7. script运行时需要的环境变量预先宣告与设置